package com.gjy.design.responsibility.d1;

import java.util.ArrayList;
import java.util.List;

/**
 * @author gjy
 * @version 1.0
 * @since 2025-11-11 11:13:55
 */
public class DynamicChainOfResponsibility {

    public static void main(String[] args) {

        List<DynamicHandler> handlers = new ArrayList<>();

        // 动态添加处理者
        handlers.add((request, h, i) -> {
            if (request.startsWith("A")) {
                System.out.println("动态处理者1处理了: " + request);
            } else {
                // 传递给下一个
                if (i + 1 < h.size()) {
                    h.get(i + 1).handle(request, h, i + 1);
                }
            }
        });

        handlers.add((request, h, i) -> {
            if (request.startsWith("B")) {
                System.out.println("动态处理者2处理了: " + request);
            } else {
                if (i + 1 < h.size()) {
                    h.get(i + 1).handle(request, h, i + 1);
                }
            }
        });

        // 发送请求
        handlers.get(0).handle("Apple", handlers, 0); // 输出: 动态处理者1处理了: Apple
        handlers.get(0).handle("Banana", handlers, 0); // 输出: 动态处理者2处理了: Banana
        handlers.get(0).handle("Cherry", handlers, 0); // 无输出
    }

}
